在上一篇文章中,我們探討了如何在Django項目中實現JWT認證系統,並介紹了使用者管理的方法。我們使用了JSON Web Token來驗證用戶身份,並通過API進行了基本的用戶操作。
本篇文章中,我們將進一步學習如何使用Django Rest Framework(DRF)來創建一個API應用,並介紹相關配置和操作步驟。
Django Rest Framework(DRF)是一個功能強大的工具包,專門用來簡化構建Web API的過程。使用DRF的好處包括:
與不使用DRF相比,使用DRF可以顯著提升開發效率,減少重複代碼,並且可以利用社區提供的各種擴展包和插件,讓開發者能夠專注於業務邏輯的實現,想了解更多可以去閱讀DRF的官方文檔:Django Rest Framework
首先,我們需要創建一個新的App,命名為hello
:
docker exec -it backend-api-services python3 manage.py startapp hello
預設的App目錄是沒有serializers.py
和urls.py
文件的,請記得手動創建這些文件。
在hello/models.py
中定義模型HelloModel
:
from django.db import models
class HelloModel(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
這個模型非常簡單,只有一個字段name
,我們將使用它來存儲名稱數據。
在hello
目錄下創建serializers.py
文件,並添加以下內容:
from rest_framework import serializers
from .models import HelloModel
class HelloSerializer(serializers.ModelSerializer):
class Meta:
model = HelloModel
fields = ['id', 'name']
序列化器將模型數據轉換為JSON格式,便於API操作。
在hello/views.py
中,創建視圖HelloViewSet
:
from rest_framework import permissions, viewsets
from .models import HelloModel
from .serializers import HelloSerializer
import logging
logger = logging.getLogger('django')
class HelloViewSet(viewsets.ModelViewSet):
queryset = HelloModel.objects.all()
serializer_class = HelloSerializer
這裡我們使用了DRF的ModelViewSet
,它提供了CRUD操作的默認實現,方便我們快速構建API。
在hello
目錄下創建urls.py
文件,並添加以下內容:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import HelloViewSet
router = DefaultRouter(trailing_slash=False)
router.register("hello", HelloViewSet)
urlpatterns = [
path('', include(router.urls)),
]
這裡我們使用了DRF的路由器來自動生成URL配置。
在backend/settings.py
中,將新的App添加到已安裝的應用程序列表中:
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"account",
"hello",
]
在backend/urls.py
中,包含hello
的URL配置:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path('account/', include('account.urls')),
path('api/', include('hello.urls')),
]
進行數據庫遷移,以應用新的模型變更:
docker exec -it backend-api-services python manage.py makemigrations hello
docker exec -it backend-api-services python manage.py migrate hello
首先,我們需要獲取JWT Token:
curl --location 'http://localhost:8000/account/token/' \
--header 'Content-Type: application/json' \
--data '{
"username": "lucien",
"password": "lucien"
}'
然後帶入access token來嘗試呼叫API:
curl --location 'http://localhost:8000/api/hello' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <your_access_token>' \
--data '{
"name": "Lucien Test2"
}'
在這篇文章中,我們學習了如何在Django項目中使用DRF創建一個簡單的API應用。我們從創建新的App開始,定義模型、序列化器和視圖,最後配置路由並進行數據庫遷移。通過這些步驟,我們成功地構建了一個基於DRF的API,並通過JWT進行身份驗證。這些技能將為您的Django項目增添更多功能和靈活性。在下一篇文章中,將帶各位讀者了解Django應用上資料庫修改的一些正確方式以及如何正確使用MariaDB和了解其內部的資訊: